/* 假设一个序列为 HSSHHHS，运用栈的知识，编写算法将S全部提到H之前，即为 SSSHHHH */

#include <iostream>
#include "stackfun.h"
using namespace std;

// 将S提前
void fun(string S)
{
  // 创建栈
  stack s;
  
  // 初始化栈
  Init(s);
  
  // 存储处理好的字符串
  string newS = "";
  
  int i = 0, j = 0;
  
  // 遍历字符串
  while (S[i] != '\0')
  {
    // 'H'，则存入栈中
    if (S[i] == 'H')
      push(s, S[i++]);
    
    // 'S'，则存入新字符串中
    else
      newS[j++] = S[i++];
  }
  
  // 将栈中的元素，添加进新字符串
  while (s.top != -1)
    newS[j++] = pop(s);
  
  // 打印新字符串
  i = 0;
  while (newS[i] != '\0')
    cout << newS[i++];
}

int main()
{
  // 生成字符串
  string S = "HSSHHHS";
  
  // 将S提前
  fun(S);
}